// 第一种办法 -- 遍历数组
// #include<stdio.h>
// int main()
// {
//     int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
//     int sz = sizeof(arr) / sizeof(arr[0]);
//     int k = 7;
    
//     int i = 1;
//     for ( i = 0 ; i < sz; i++)
//     {
//         if (arr[i] == k)
//         {
//             printf("找到了，下标是:%d",i);
//             break;
//         }
//     }
//     if (i == sz)
//     {
//         printf("找不到");
//     }  
//     return 0;
// }

// 第二种方法 -- 二分法 (推荐)
#include<stdio.h>
int main()
{

    int arr[] = {1 ,2, 3, 4, 5, 6, 7, 8, 9, 10};
    int sz = sizeof(arr) / sizeof(arr[0]); //计算数组的长度
    
    int left = 0;//用数组的下标表示
    int right = sz - 1;
    int k = 7;

    while (left <= right)
    {
        // int middle = (left + right) / 2;
        int middle = left + (right - left) / 2; //可以确保数字不会溢出
        if (arr[middle] < k)
        {
            left = middle + 1;
        }
        else if (arr[middle] > k)
        {
            right = middle - 1;
        }
        else
        {
            printf("找到了，下标是:%d",middle);
            break;
        }
    }
    if (left > right)
    {
        printf("找不到");
    }
    
    return 0;
}